﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<ctype.h>
#include<assert.h>
#include<stdbool.h>
#include"SeqList.h"

//数据结构是计算机存储、组织数据的⽅式。数据结构是指相互之间存在⼀种或多种特定关系的数据元素的集合\
//顺序表的概念及结构
/*线性表
线性表（linearlist）是n个具有相同特性的数据元素的有限序列。线性表是⼀种在实际中⼴泛使
⽤的数据结构，常⻅的线性表：顺序表、链表、栈、队列、字符串...
线性表在逻辑上是线性结构，也就说是连续的⼀条直线。但是在物理结构上并不⼀定是连续的，
线性表在物理上存储时，通常以数组和链式结构的形式存储。*/
//线性表 具有相同特性的数据结构的集合 物理结构：不一定连续  逻辑结构：连续的
//顺序表 顺序表的底层结构是数组 物理结构：连续的 逻辑结构：连续的
//顺序表的底层结构是数组，对数组的封装，实现了常⽤的增删改查等接⼝
//顺序表的分类 
//静态顺序表  使⽤定⻓数组存储元素  静态顺序表缺陷：空间给少了不够⽤，给多了造成空间浪费
//struct SeqList
//{
//	int arr[100];//定长数据
//	int size;//顺序表当前有效的数据个数
//};

//动态顺序表  按需申请  可动态增容
//struct SeqList
//{
//	int* arr;
//	int size;//有效的数据个数
//	int capacity;//空间大小
//};

//增容通常来说是成倍数的增加，一般是2或者3倍

//动态顺序表的实现
void SLTest01()
{
	SL sl;
	SLInit(&sl);
	//ɾĲ
	//β
	SLPushBack(&sl, 1);
	SLPushBack(&sl, 2);
	SLPushBack(&sl, 3);
	SLPushBack(&sl, 4);
	SLPrint(sl);//1 2 3 4

	//SLPushFront(&sl, 5);
	//SLPushFront(&sl, 6);

	//βɾ
	SLPopBack(&sl);
	SLPrint(sl);//1 2 3 
	SLPopBack(&sl);
	SLPrint(sl);
	SLPopBack(&sl);
	SLPrint(sl);
	SLPopBack(&sl);
	SLPrint(sl);
	SLPopFront(&sl);
	SLPrint(sl);
	//...........
	SLDestroy(&sl);
}

int main()
{
	SLTest01();
	return 0;
}





















































































